// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

namespace System
{
    public enum SimpleEnum
    {
        Red = 1,
        Blue = 2,
        Green = 3,
        Green_a = 3,
        Green_b = 3,
        B = 4
    }

    public enum ByteEnum : byte
    {
        Min = byte.MinValue,
        One = 1,
        Two = 2,
        Max = byte.MaxValue,
    }

    public enum SByteEnum : sbyte
    {
        Min = sbyte.MinValue,
        One = 1,
        Two = 2,
        Max = sbyte.MaxValue,
    }

    public enum UInt16Enum : ushort
    {
        Min = ushort.MinValue,
        One = 1,
        Two = 2,
        Max = ushort.MaxValue,
    }

    public enum Int16Enum : short
    {
        Min = short.MinValue,
        One = 1,
        Two = 2,
        Max = short.MaxValue,
    }

    public enum UInt32Enum : uint
    {
        Min = uint.MinValue,
        One = 1,
        Two = 2,
        Max = uint.MaxValue,
    }

    public enum Int32Enum : int
    {
        Min = int.MinValue,
        One = 1,
        Two = 2,
        Max = int.MaxValue,
    }

    public enum UInt64Enum : ulong
    {
        Min = ulong.MinValue,
        One = 1,
        Two = 2,
        Max = ulong.MaxValue,
    }

    public enum Int64Enum : long
    {
        Min = long.MinValue,
        One = 1,
        Two = 2,
        Max = long.MaxValue,
    }

    [Flags]
    public enum FlagsSByteEnumWithNegativeValues : sbyte
    {
        A = 0b00000000,
        B = 0b00000001,
        C = 0b00000010,
        D = 0b00000100,
        E = 0b00001000,
        F = 0b00010000,
        G = 0b00100000,
        H = 0b01000000,
        I = unchecked((sbyte)0b10000000),
    }

    [Flags]
    public enum FlagsInt32EnumWithOverlappingNegativeValues : int
    {
        A = 0x000F0000,
        B = 0x0000FFFF,
        C = unchecked((int)0xFFFF0000),
    }

    public enum CompleteSByteEnum : sbyte
    {
        Value0 = 0,
        Value1 = 1,
        Value2 = 2,
        Value3 = 3,
        Value4 = 4,
        Value5 = 5,
        Value6 = 6,
        Value7 = 7,
        Value8 = 8,
        Value9 = 9,
        Value10 = 10,
        Value11 = 11,
        Value12 = 12,
        Value13 = 13,
        Value14 = 14,
        Value15 = 15,
        Value16 = 16,
        Value17 = 17,
        Value18 = 18,
        Value19 = 19,
        Value20 = 20,
        Value21 = 21,
        Value22 = 22,
        Value23 = 23,
        Value24 = 24,
        Value25 = 25,
        Value26 = 26,
        Value27 = 27,
        Value28 = 28,
        Value29 = 29,
        Value30 = 30,
        Value31 = 31,
        Value32 = 32,
        Value33 = 33,
        Value34 = 34,
        Value35 = 35,
        Value36 = 36,
        Value37 = 37,
        Value38 = 38,
        Value39 = 39,
        Value40 = 40,
        Value41 = 41,
        Value42 = 42,
        Value43 = 43,
        Value44 = 44,
        Value45 = 45,
        Value46 = 46,
        Value47 = 47,
        Value48 = 48,
        Value49 = 49,
        Value50 = 50,
        Value51 = 51,
        Value52 = 52,
        Value53 = 53,
        Value54 = 54,
        Value55 = 55,
        Value56 = 56,
        Value57 = 57,
        Value58 = 58,
        Value59 = 59,
        Value60 = 60,
        Value61 = 61,
        Value62 = 62,
        Value63 = 63,
        Value64 = 64,
        Value65 = 65,
        Value66 = 66,
        Value67 = 67,
        Value68 = 68,
        Value69 = 69,
        Value70 = 70,
        Value71 = 71,
        Value72 = 72,
        Value73 = 73,
        Value74 = 74,
        Value75 = 75,
        Value76 = 76,
        Value77 = 77,
        Value78 = 78,
        Value79 = 79,
        Value80 = 80,
        Value81 = 81,
        Value82 = 82,
        Value83 = 83,
        Value84 = 84,
        Value85 = 85,
        Value86 = 86,
        Value87 = 87,
        Value88 = 88,
        Value89 = 89,
        Value90 = 90,
        Value91 = 91,
        Value92 = 92,
        Value93 = 93,
        Value94 = 94,
        Value95 = 95,
        Value96 = 96,
        Value97 = 97,
        Value98 = 98,
        Value99 = 99,
        Value100 = 100,
        Value101 = 101,
        Value102 = 102,
        Value103 = 103,
        Value104 = 104,
        Value105 = 105,
        Value106 = 106,
        Value107 = 107,
        Value108 = 108,
        Value109 = 109,
        Value110 = 110,
        Value111 = 111,
        Value112 = 112,
        Value113 = 113,
        Value114 = 114,
        Value115 = 115,
        Value116 = 116,
        Value117 = 117,
        Value118 = 118,
        Value119 = 119,
        Value120 = 120,
        Value121 = 121,
        Value122 = 122,
        Value123 = 123,
        Value124 = 124,
        Value125 = 125,
        Value126 = 126,
        Value127 = 127,
        Value128 = -128,
        Value129 = -127,
        Value130 = -126,
        Value131 = -125,
        Value132 = -124,
        Value133 = -123,
        Value134 = -122,
        Value135 = -121,
        Value136 = -120,
        Value137 = -119,
        Value138 = -118,
        Value139 = -117,
        Value140 = -116,
        Value141 = -115,
        Value142 = -114,
        Value143 = -113,
        Value144 = -112,
        Value145 = -111,
        Value146 = -110,
        Value147 = -109,
        Value148 = -108,
        Value149 = -107,
        Value150 = -106,
        Value151 = -105,
        Value152 = -104,
        Value153 = -103,
        Value154 = -102,
        Value155 = -101,
        Value156 = -100,
        Value157 = -99,
        Value158 = -98,
        Value159 = -97,
        Value160 = -96,
        Value161 = -95,
        Value162 = -94,
        Value163 = -93,
        Value164 = -92,
        Value165 = -91,
        Value166 = -90,
        Value167 = -89,
        Value168 = -88,
        Value169 = -87,
        Value170 = -86,
        Value171 = -85,
        Value172 = -84,
        Value173 = -83,
        Value174 = -82,
        Value175 = -81,
        Value176 = -80,
        Value177 = -79,
        Value178 = -78,
        Value179 = -77,
        Value180 = -76,
        Value181 = -75,
        Value182 = -74,
        Value183 = -73,
        Value184 = -72,
        Value185 = -71,
        Value186 = -70,
        Value187 = -69,
        Value188 = -68,
        Value189 = -67,
        Value190 = -66,
        Value191 = -65,
        Value192 = -64,
        Value193 = -63,
        Value194 = -62,
        Value195 = -61,
        Value196 = -60,
        Value197 = -59,
        Value198 = -58,
        Value199 = -57,
        Value200 = -56,
        Value201 = -55,
        Value202 = -54,
        Value203 = -53,
        Value204 = -52,
        Value205 = -51,
        Value206 = -50,
        Value207 = -49,
        Value208 = -48,
        Value209 = -47,
        Value210 = -46,
        Value211 = -45,
        Value212 = -44,
        Value213 = -43,
        Value214 = -42,
        Value215 = -41,
        Value216 = -40,
        Value217 = -39,
        Value218 = -38,
        Value219 = -37,
        Value220 = -36,
        Value221 = -35,
        Value222 = -34,
        Value223 = -33,
        Value224 = -32,
        Value225 = -31,
        Value226 = -30,
        Value227 = -29,
        Value228 = -28,
        Value229 = -27,
        Value230 = -26,
        Value231 = -25,
        Value232 = -24,
        Value233 = -23,
        Value234 = -22,
        Value235 = -21,
        Value236 = -20,
        Value237 = -19,
        Value238 = -18,
        Value239 = -17,
        Value240 = -16,
        Value241 = -15,
        Value242 = -14,
        Value243 = -13,
        Value244 = -12,
        Value245 = -11,
        Value246 = -10,
        Value247 = -9,
        Value248 = -8,
        Value249 = -7,
        Value250 = -6,
        Value251 = -5,
        Value252 = -4,
        Value253 = -3,
        Value254 = -2,
        Value255 = -1,
    }

    public enum CompleteSByteRandomOrderEnum : sbyte
    {
        Value0 = 20,
        Value1 = 52,
        Value2 = 107,
        Value3 = -93,
        Value4 = -9,
        Value5 = 110,
        Value6 = -106,
        Value7 = 100,
        Value8 = 116,
        Value9 = 49,
        Value10 = 67,
        Value11 = -91,
        Value12 = 25,
        Value13 = 53,
        Value14 = 34,
        Value15 = 41,
        Value16 = -128,
        Value17 = -122,
        Value18 = 38,
        Value19 = -100,
        Value20 = -57,
        Value21 = 115,
        Value22 = 78,
        Value23 = -45,
        Value24 = 69,
        Value25 = -107,
        Value26 = 71,
        Value27 = -62,
        Value28 = -3,
        Value29 = -6,
        Value30 = 43,
        Value31 = 120,
        Value32 = -87,
        Value33 = 17,
        Value34 = -97,
        Value35 = 96,
        Value36 = -124,
        Value37 = 54,
        Value38 = -10,
        Value39 = 58,
        Value40 = 65,
        Value41 = 5,
        Value42 = 37,
        Value43 = 117,
        Value44 = 61,
        Value45 = -85,
        Value46 = 6,
        Value47 = 99,
        Value48 = -49,
        Value49 = -78,
        Value50 = -66,
        Value51 = -36,
        Value52 = -63,
        Value53 = 26,
        Value54 = 29,
        Value55 = 50,
        Value56 = 4,
        Value57 = 9,
        Value58 = -112,
        Value59 = -113,
        Value60 = 103,
        Value61 = -30,
        Value62 = -119,
        Value63 = -104,
        Value64 = 83,
        Value65 = -31,
        Value66 = 24,
        Value67 = -76,
        Value68 = 10,
        Value69 = -37,
        Value70 = -61,
        Value71 = -114,
        Value72 = -86,
        Value73 = -2,
        Value74 = -98,
        Value75 = -102,
        Value76 = -118,
        Value77 = -19,
        Value78 = 48,
        Value79 = -72,
        Value80 = 87,
        Value81 = 18,
        Value82 = -7,
        Value83 = -111,
        Value84 = 33,
        Value85 = 124,
        Value86 = -51,
        Value87 = -81,
        Value88 = 32,
        Value89 = 77,
        Value90 = 59,
        Value91 = -28,
        Value92 = -59,
        Value93 = 57,
        Value94 = -21,
        Value95 = 62,
        Value96 = -11,
        Value97 = -65,
        Value98 = -120,
        Value99 = 95,
        Value100 = 97,
        Value101 = -16,
        Value102 = -54,
        Value103 = 42,
        Value104 = -8,
        Value105 = 12,
        Value106 = 105,
        Value107 = 23,
        Value108 = -56,
        Value109 = -69,
        Value110 = 74,
        Value111 = 31,
        Value112 = -17,
        Value113 = -23,
        Value114 = 88,
        Value115 = -103,
        Value116 = 101,
        Value117 = 111,
        Value118 = -115,
        Value119 = 89,
        Value120 = 76,
        Value121 = 109,
        Value122 = 47,
        Value123 = -39,
        Value124 = 121,
        Value125 = 94,
        Value126 = -34,
        Value127 = 16,
        Value128 = 90,
        Value129 = 75,
        Value130 = 1,
        Value131 = -32,
        Value132 = -44,
        Value133 = -64,
        Value134 = -121,
        Value135 = 63,
        Value136 = 45,
        Value137 = -1,
        Value138 = -70,
        Value139 = 122,
        Value140 = 82,
        Value141 = -117,
        Value142 = -12,
        Value143 = 60,
        Value144 = -50,
        Value145 = -83,
        Value146 = 127,
        Value147 = -22,
        Value148 = 3,
        Value149 = 36,
        Value150 = 55,
        Value151 = 81,
        Value152 = 70,
        Value153 = 7,
        Value154 = 11,
        Value155 = -92,
        Value156 = -109,
        Value157 = -110,
        Value158 = 86,
        Value159 = 114,
        Value160 = 106,
        Value161 = 85,
        Value162 = -40,
        Value163 = 102,
        Value164 = -90,
        Value165 = 123,
        Value166 = -53,
        Value167 = -108,
        Value168 = 8,
        Value169 = 46,
        Value170 = 73,
        Value171 = -105,
        Value172 = -33,
        Value173 = -95,
        Value174 = -99,
        Value175 = 30,
        Value176 = -84,
        Value177 = -67,
        Value178 = -79,
        Value179 = -60,
        Value180 = 56,
        Value181 = -5,
        Value182 = 98,
        Value183 = -35,
        Value184 = -14,
        Value185 = -29,
        Value186 = -47,
        Value187 = 15,
        Value188 = -43,
        Value189 = -82,
        Value190 = -68,
        Value191 = 14,
        Value192 = -125,
        Value193 = 2,
        Value194 = -73,
        Value195 = 125,
        Value196 = 27,
        Value197 = -123,
        Value198 = -75,
        Value199 = 72,
        Value200 = 68,
        Value201 = -26,
        Value202 = 0,
        Value203 = 93,
        Value204 = -20,
        Value205 = -27,
        Value206 = 51,
        Value207 = 66,
        Value208 = 64,
        Value209 = -89,
        Value210 = -24,
        Value211 = -18,
        Value212 = -74,
        Value213 = 92,
        Value214 = -80,
        Value215 = -88,
        Value216 = -46,
        Value217 = 22,
        Value218 = -15,
        Value219 = 84,
        Value220 = -48,
        Value221 = 44,
        Value222 = -42,
        Value223 = -4,
        Value224 = 126,
        Value225 = 13,
        Value226 = 119,
        Value227 = -52,
        Value228 = 104,
        Value229 = -71,
        Value230 = 91,
        Value231 = 19,
        Value232 = -77,
        Value233 = 39,
        Value234 = 79,
        Value235 = -25,
        Value236 = 118,
        Value237 = 113,
        Value238 = 80,
        Value239 = 40,
        Value240 = 112,
        Value241 = -127,
        Value242 = 28,
        Value243 = -55,
        Value244 = -116,
        Value245 = -38,
        Value246 = -58,
        Value247 = -41,
        Value248 = -13,
        Value249 = -126,
        Value250 = -96,
        Value251 = 21,
        Value252 = -94,
        Value253 = 108,
        Value254 = -101,
        Value255 = 35,
    }
}
